package leetcode;

import java.util.Stack;

/**
 * @author Hang
 * @date 2022/10/4
 * @project AutumnOffer
 * @description 739.每日温度 单调栈
 **/
public class dailyTemperatures {
    public static void main(String[] args) {
        int[] temperatures = new int[]{73,74,75,71,69,72,76,73};
        int[] dailyTemperatures = dailyTemperatures(temperatures);
        System.out.println(dailyTemperatures);
    }
    public static int[] dailyTemperatures(int[] temperatures) {
        int len = temperatures.length; // 获取数组长度
        Stack<Integer> st = new Stack<>(); // 定义单调栈
        int[] ans = new int[len]; // 定义返回数组
        for(int i=0;i<len;i++){ // 遍历过程
            while(!st.isEmpty() && temperatures[i] > temperatures[st.peek()]){ // 栈不为空，且当前索引的数字大于栈中数字，赋值并退栈
                ans[st.peek()] = i - st.peek();
                st.pop();
            }
            st.push(i); // 将当前数字入栈
        }
        return ans;
    }
}
